<template>
    <div id="credit"></div>
    <div id="cesiumContainer"></div>
</template>
<script lang="ts" setup>
import * as Cesium from 'cesium';
import { ACCESS_TOKEN } from '../../utils/constant';
Cesium.Ion.defaultAccessToken = ACCESS_TOKEN;
/**
 * 叠加图层
 */
const initMap = () => {
    const viewer = new Cesium.Viewer('cesiumContainer', {
        // 是否显示信息窗口
        infoBox: false,
        // 是否显示查询框
        geocoder: false,
        // 是否显示home按钮
        homeButton: false,
        // 切换3D和2D的按钮
        sceneModePicker: false,
        // 切换图层按钮
        baseLayerPicker: false,
        // 更多帮助按钮
        navigationHelpButton: false,
        // 动画表盘
        animation: false,
        creditContainer: 'credit',
        timeline: false,
        fullscreenButton: false,
        vrButton: false
    });
    // 设置显示fps
    viewer.scene.debugShowFramesPerSecond = false;
    // 角度转弧度
    const radians = Cesium.Math.toRadians(90);
    console.log(radians, '===radians===');
    // 弧度转角度
    const degrees = Cesium.Math.toDegrees(2 * Math.PI);
    console.log(degrees, '===degrees==');

    // 将 度数格式的经纬度（例如 120.5° 东经，30.3° 北纬）和高度值，转换为 Cesium 内部使用的 弧度格式的 Cartographic 对象。
    const cartographic = Cesium.Cartographic.fromDegrees(89, 20, 100);
    console.log(cartographic, '===cartographic===');
    // 经纬度转化为笛卡尔坐标系

    {
        // 输入：经度（度）、纬度（度）、高度（米）
        const longitude = 120.5; // 度
        const latitude = 30.3; // 度
        const height = 100; // 米

        // 方法1：直接使用 fromDegrees 转换（自动处理单位）
        const cartesian1 = Cesium.Cartesian3.fromDegrees(longitude, latitude, height);
        console.log(cartesian1, '===cartesian===');

        // 方法2：先转为弧度，再转换
        const cartographic = Cesium.Cartographic.fromDegrees(longitude, latitude, height);
        const cartesian = Cesium.Cartesian3.fromRadians(
            cartographic.longitude,
            cartographic.latitude,
            cartographic.height
        );
        console.log(cartesian, '===cartesian===cartesian');
    }
    // 笛卡尔转地理坐标系
    {
        // 输入：Cartesian3 坐标
        const cartesian = new Cesium.Cartesian3(100, 200, 300);

        // 转换为 WGS84 弧度坐标
        const cartographic = Cesium.Cartographic.fromCartesian(cartesian);

        // 若需要度数表示
        const longitude = Cesium.Math.toDegrees(cartographic.longitude);
        const latitude = Cesium.Math.toDegrees(cartographic.latitude);
        const height = cartographic.height; // 椭球高
        console.log(longitude, latitude, height);
    }
};
onMounted(() => {
    initMap();
});
</script>
<style lang="scss" scoped></style>
